/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Produccion.Controlador;

import com.dp1.pucp.Administracion.DAO.RRHHDAO;
import com.dp1.pucp.Logistica.DAO.TipoProductoDAO;
import com.dp1.pucp.Modelo.Clases.Demanda;
import com.dp1.pucp.Modelo.Clases.Empleadoxmaquinasimulacion;
import com.dp1.pucp.Modelo.Clases.Lineapedidoproducto;
import com.dp1.pucp.Modelo.Clases.Pedidoproducto;
import com.dp1.pucp.Modelo.Clases.Simulacion;
import com.dp1.pucp.Produccion.DAO.ProduccionDAO;
import com.dp1.pucp.Produccion.Vista.DetalleSimulacionGUI;
import com.dp1.pucp.Simulacion.DAO.SimulacionDAO;
import com.dp1.pucp.Simulacion.VIsta.MantProduccionGUI2;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Rodrigo
 */
public class MantProduccionControlador {
    
    private MantProduccionGUI2 produccionView;
    private SimulacionDAO s;
    private RRHHDAO r;
    private TipoProductoDAO t;
    private ProduccionDAO p;
    private ArrayList<Simulacion> lstSimulacion;
    
    public MantProduccionControlador(MantProduccionGUI2 produccionView){
        
        this.produccionView=produccionView;
        this.produccionView.addBuscarListener(new buscarListener());
        this.produccionView.addExaminarListener(new examinarListener());
        this.produccionView.addLimpiarListener(new limpiarListener());
        p = new ProduccionDAO();
        s = new SimulacionDAO();
        //lstSimulacion=p.listarSimulaciones(1);//listo simulaciones elegidas
    }
    
    public MantProduccionControlador getControlador(){
        return this;
    }
    
    public void ActualizarTabla(){
        
        this.LimpiarDatos();
        produccionView.llenaGrilla(lstSimulacion);
    }
    
      
    class limpiarListener implements ActionListener {
        
        @Override
        public void actionPerformed(ActionEvent e) {
            LimpiarDatos();
        }
        
    }
    
    
    class examinarListener implements ActionListener {
        
        @Override
        public void actionPerformed(ActionEvent e) {
            int indice=-1;
            indice = produccionView.getFilaSelSimulacion();
            if (indice!=-1){
                if (lstSimulacion.get(indice).getEstado()==4 && lstSimulacion.get(indice).getEstado()==5){
                    produccionView.mostrarError("Esta simulacion ya se utilizo");
                }
                else {
                    DetalleSimulacionGUI gui = new DetalleSimulacionGUI(produccionView.getPadre(), true);
                    gui.setTitle("Detalle de Configuracion de Simulacion");
                    indice = produccionView.getFilaSelSimulacion();
                    DetalleSimulacionControlador controlador = new DetalleSimulacionControlador(gui, lstSimulacion, indice,getControlador());
                    gui.setVisible(true);                     
                }                             
            } else {
                produccionView.mostrarError("Debe seleccionar una simulacion");
            }      
        }
        
    }
    
    class buscarListener implements ActionListener {
        
        @Override
        public void actionPerformed(ActionEvent e) {
            Date fechaIni, fechaFin;
            fechaIni = produccionView.getFechaIni();
            fechaFin = produccionView.getFechaFin();
            if (((fechaIni != null) & (fechaFin == null)) || ((fechaIni == null) & (fechaFin != null))) {
                produccionView.mostrarError("Debe ingresar un rango de fechas");
            } else if ((fechaIni == null) & (fechaFin == null)) {
                lstSimulacion=p.listarSimulaciones();
            } else if (fechaFin.compareTo(fechaIni)<0){
                produccionView.mostrarError("Rango de fechas incorrecto");               
            }
            else {
                lstSimulacion=p.listarSimulacionesPorFecha(fechaFin, fechaFin);
            }
                    
            ActualizarTabla();
        }
        
    }
    
     public void LimpiarDatos() {
        ((DefaultTableModel) produccionView.getTabla().getModel()).setRowCount(0);
    }
     
     public void calculademanda(ArrayList<Pedidoproducto> pedidos, Demanda demanda1, Demanda demanda2, Demanda demanda3){//muestra las demandas en la ventana
         int cant_normaltotal=0;//calcula las demanandas spero no son guardadas aun
         int cant_dectotal =0;
         int cant_reltotal =0;
         
         ArrayList<Lineapedidoproducto> lineas = new ArrayList();
         for(int i=0;i < pedidos.size();i++){
             lineas = p.getlineasByPedido(pedidos.get(i).getIdpedidoproducto());
             cant_normaltotal = cant_normaltotal + Math.round(lineas.get(0).getCantidad()*lineas.get(1).getPresentacion().getCantidad());
             cant_dectotal = cant_dectotal + Math.round(lineas.get(1).getCantidad()*lineas.get(1).getPresentacion().getCantidad());
             cant_reltotal = cant_reltotal + Math.round(lineas.get(2).getCantidad()*lineas.get(1).getPresentacion().getCantidad());  
         }
         
         int cant_normal = cant_normaltotal/3;
         
         int cant_dec = cant_dectotal/3;
         
         int cant_rel = cant_reltotal/3;
         
          demanda1.setCantPedNormal(cant_normal);
          demanda1.setCantPedDec(cant_dec);
          demanda1.setCantPedRell(cant_rel);
          demanda1.setTurno(1);
          
          demanda2.setCantPedNormal(cant_normal);
          demanda2.setCantPedDec(cant_dec);
          demanda2.setCantPedRell(cant_rel);
          demanda2.setTurno(2);
          
          demanda3.setCantPedNormal(cant_normal);
          demanda3.setCantPedDec(cant_dec);
          demanda3.setCantPedRell(cant_rel);
          demanda3.setTurno(3);
     
     }
      
    
}
